/**
 * harmony.traitement.TraitementRetour.java
 * @author xavier.miorcec@elomobile.com
 * @9 juil. 2009
 * @ELO_bernardi
 */
package com.elomobile.harmony.traitement;


import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

import com.elomobile.harmony.dao.RequetesDAO;
import com.elomobile.harmony.traiterRetour.TraiterRetourElo;
import com.elomobile.harmony.utils.ConstantesHarmony;
import com.elomobile.harmony.utils.LoggerUtils;
import com.elomobile.utilitaire.utils2.FiltreFichiers;
import com.elomobile.utilitaire.utils2.OutilsDateHeure;

public class TraitementRetour {

	Logger logger = Logger.getLogger("TraitementRetour");
	private boolean initLog = false;
	private RequetesDAO requetes;
	private TraiterRetourElo traitementRetourElo;

	protected void initialiseLogger() {
		if (!initLog) {
			PatternLayout pattern = new PatternLayout();
			pattern.setConversionPattern("%d{yyyy-MM-dd HH:mm:ss} [%F:%c{1}:%L] [%-5p] [%t] - %m%n");
			logger = Logger.getLogger("TraitementRetour");
			logger.addAppender(LoggerUtils.CreateRollingFileAppenderTraitementRetour());
			logger.setLevel(Level.INFO);
			initLog = true;
		}
	}

	public void lancerTraitement() {
		initialiseLogger();
		logger.info("Début de lancement Traitement de retour " + OutilsDateHeure.dateHeure());
		File repertoire = new File(ConstantesHarmony.getInstance().getCheminDepart());
		FilenameFilter filtreExtension = new FiltreFichiers("xml");
		String s[] = repertoire.list(filtreExtension);
		ArrayList<String> listeFichierXml = new ArrayList<String>();
		try {
			if (s != null) {
				for (int i = 0; i < s.length; i++) {
					listeFichierXml.add(ConstantesHarmony.getInstance().getCheminDepart() + s[i]);
				}

				//Traitement des fichiers
				for (String fichier : listeFichierXml) {
					File file = new File(fichier);
					traitementRetourElo.traiterFichier(file);
					file.delete();
				}
			}
		} catch (NullPointerException e) {
			logger.error(e);
		}
		logger.info("Fin de lancement Traitement de retour " + OutilsDateHeure.dateHeure());
	}

	/**
	 * @return the traitementRetourElo
	 */
	public TraiterRetourElo getTraitementRetourElo() {
		return traitementRetourElo;
	}

	/**
	 * @param traitementRetourElo the traitementRetourElo to set
	 */
	public void setTraitementRetourElo(TraiterRetourElo traitementRetourElo) {
		this.traitementRetourElo = traitementRetourElo;
	}

	/**
	 * @return the requetes
	 */
	public RequetesDAO getRequetes() {
		return requetes;
	}

	/**
	 * @param requetes the requetes to set
	 */
	public void setRequetes(RequetesDAO requetes) {
		this.requetes = requetes;
	}

}
